PLDs have increasingly proliferated in many areas of technology, such as data processing and signal processing applications. The inherent flexibility of the PLD and the ability to re-configure the PLD have in part led to their popularity. System designers and even system end-users can program the PLDs and re-configure the functionality of part or all of the system. Re-configuring the system avoids costly and time-consuming re-design of the system or its various components or sub-systems.
Configuring a PLD typically involves providing configuration data to the PLD. Conventional systems use configuration memories such as a read-only memory (ROM), an erasable programmable ROM (EPROM), or an electrically erasable programmable ROM (EEPROM) to store the configuration data. These configuration memories, however, have certain disadvantages. First, they have a relatively high cost, but relatively low density. Second, even in the case of EEPROMs (to which one can write information), the PLD or the user does not have access to any unused capacity of the memory. In other words, the unused capacity of the EEPROM is not available to either the PLD or the user and is “wasted.” Third, conventional configuration memories or devices typically use additional logic circuitry (such as a processor or controller) that tends to increase costs. A need exists for a low-cost configuration device that overcomes the disadvantages of the conventional solutions.